package com.itheima.jobs;

import com.itheima.constant.RedisConstant;
import com.itheima.utils.QiNiuUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

/**
 * @version V1.0
 * @author: ljx
 * @date: 2020/01/14 10:12
 * @description:
 */
@Component
public class ClearDirtyImg {
    @Autowired
    JedisPool jedisPool;

    public void clear() {
        //获取redis连接
        Jedis jedis = jedisPool.getResource();
        //比较得到两个缓存数据库中不同的文件名，不同的文件名就是脏数据
        Set<String> diff = jedis.sdiff(RedisConstant.SETMEAL_QINIU_STORE, RedisConstant.SETMEAL_DB_STORE);//数据多放在前面
        //遍历逐个删除
        // for (String s : diff) {
        //     QiNiuUtil.delImg(s);
        //     jedis.srem(RedisConstant.SETMEAL_QINIU_STORE, s);
        // }

        //判断两者比较得到到set集合是否为空，如果不为空代笔有脏数据产生，否则代表无脏数据
        if (diff.size() > 0) {
            //  批量删除
            //将set集合中数据转换成string类型数组
            String[] needDel = diff.toArray(new String[]{});

            System.out.println("准备删除");
            //指定jedis中的批量删除方法，传入指定的key和待删除的元素数组
            jedis.srem(RedisConstant.SETMEAL_QINIU_STORE, needDel);

            System.out.println("删除成功");
            //归还连接
            jedis.close();
        } else {
            System.out.println("今日无脏数据");
            jedis.close();
        }


    }
}
